Attribute-driven storage for storage devices

ABSTRACT

Technologies are provided for storing data in a storage device based on an associated attribute or attributes. A storage device can be configured to write data to a storage location of the storage device based on an associated attribute. The attribute can describe one or more storage-related requirements of the data. The storage device can identify one or more storage locations where the data can be stored that meet the storage-related requirements described by the attribute. A host computer can transmit an updated attribute for the data to the storage device to reflect new storage-related requirements for the data. The storage device can write the data to a new storage location that meets the new requirements. A mapping table can be maintained that associates a logical identifier for the data with the actual storage location where the data is stored.

BACKGROUND

Storage devices, such as hard disk drives (HDDs) and solid state storagedevices (SSDs), can comprise various storage media where data can bestored. At least some storage devices (such as some solid state storagedevices (SSDs) and some shingled magnetic recording (SMR) storagedevices) organize data into multiple storage zones. Some such storagedevices can have storage zones where data can be stored using differentrecording formats. For example, a zoned storage device comprising amagnetic disk can store data in one zone using a perpendicular magneticrecording (PMR) format and can store data in another zone using an SMRformat. In at least some cases, a host computer connected to a storagedevice can specify a storage location in the storage device where datatransmitted from the host computer to the storage device should bestored. The host computer can maintain a mapping table where variousdata are mapped to physical storage locations, such as zones, in astorage device where the data are stored.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A-B are system diagrams depicting an example system configured tostore data using an attribute.

FIG. 2 is a system diagram depicting example performance factors in astorage device.

FIGS. 3A-B are system diagrams depicting an example system configured torelocate data on a magnetic storage medium based on an associatedattribute.

FIG. 4 is a flowchart of an example method for storing data in a storagedevice based on an attribute.

FIG. 5 is a flowchart of an example method for updating an attribute fordata based on a data access rate of the data.

FIG. 6 is a system diagram depicting an example storage deviceconfigured to store data based on an associated attribute.

FIG. 7 is a chart depicting a relationship between data access time andstorage location on a magnetic storage medium.

FIG. 8 is a diagram depicting example files stored in various storagelocations of an example storage device.

FIG. 9 is a diagram depicting an example logical-to-physical addressmapping for a zoned storage device.

FIG. 10 is an example system comprising a storage device comprisingmultiple storage zones.

FIG. 11 depicts a generalized example of a suitable computingenvironment in which the described innovations may be implemented.

DETAILED DESCRIPTION

In at least some cases, different storage locations within a storagedevice can have different data access performance characteristics. Forexample, in at least some cases, data access times for data stored in amagnetic disk can increase as the area of the magnetic disk that isbeing accessed moves from an outer diameter of the magnetic disk to aninner diameter of the magnetic disk. This can occur when an outerdiameter of the magnetic disk contains a higher number of storagelocations (such as sectors) than an inner diameter of the magnetic diskand the disk is rotated at the same speed when accessing locations atboth the outer and inner diameters. In another example, using a zonedstorage device where data can be written to different zones usingdifferent storage formats, data written to a zone using one storageformat may be able to be accessed at a faster rate than data writtenanother zone using another storage format. In another example, using astorage device with multiple storage media, storage locations indifferent storage media may be accessed at different data access rates.

A storage location can be identified for storing given data based onstorage-related requirements of the data. A storage location can beselected by examining access performance characteristics of the storagelocation, and determining whether the performance characteristics willmeet the storage-related requirements of the data. As storage-relatedrequirements of the data change over time, the data can be relocated(and/or duplicated) to different storage locations that meet the data'schanging requirements. However, in scenarios where a connected hostcomputer manages the storing of data in physical storage location of astorage device, moving the data from one storage location to anotherstorage location can require multiple data access operations. This canrequire multiple data access operations, as data must be read from thestorage device by the host computer and then written back to the storagedevice by the host computer. Furthermore, the host computer must updatea record that tracks the physical storage location where the data isstored. In a scenario where this record is also persisted to the storagedevice, additional data access operations are necessary to update therecord.

At least some of the embodiments of the technologies described hereinsolve these problems by enabling the storage device to select, andchange, the storage location of data based on one or more attributesassociated with the data. For example, a storage device can beconfigured to store data to a first storage location, receive anattribute associated with the data from a host computer, and then movethe data to a second storage location based on the received attribute.

In a different or further embodiment, a host computer can be configuredto transmit data to the storage device along with a logical identifier(such as a logical block address, etc.) for the data. The storage devicecan be configured to store the data in a storage location and maintain amapping record that maps the logical identifier to an address of thestorage location. The host computer can be configured to transmit anattribute associated with the data to the storage device. The attributecan describe one or more storage-related characteristics of the data(such as an access performance requirement for the data). The storagedevice can move (or duplicate) the data to another storage location inthe storage device based on the attribute. The storage device can thenupdate the mapping record to map the logical identifier for the data tothe address of the other storage location. Thus, the host computer cancontinue to access the data using the logical identifier even as thestorage device changes the underlying storage location of the data. Bytransmitting one or more attributes for the data to the storage device,the host computer can specify storage-related characteristics of thedata that will be taken into account by the storage device when decidingwhere to store the data, without having to specifically control thephysical storage of the data on the storage device.

In a different or further embodiment, the host computer can monitor dataaccess characteristics of the data over time (such as a data accessrate) and can transmit updated attributes for the data to the storagedevice based on detected changes. The storage device can change theunderlying storage location of the data based on the changing attributevalues.

FIG. 1A is a system diagram depicting an example system 100 configuredto store data using a mapping table 140 to associate logical dataidentifiers (e.g., 165) of data with physical storage locations (e.g.,153 and 155) where the data are stored in a storage device 120.

The example system 100 comprises a host computer 110 and the storagedevice 120. The storage device 120 comprises a storage device controller130 and a storage medium 150. The storage medium 150 comprises multiplestorage locations (e.g., 153 and 155). A storage location can compriseone or more data blocks, sectors, zones, or the like. The depictions ofthe storage locations of the storage medium 150 in FIGS. 1A-B areintended to be illustrative and do not necessarily reflect actualphysical layouts of the storage locations in the storage medium 150.Furthermore, the number of storage locations depicted is not intended tobe limiting. More or fewer storage locations are possible.

The host computer 110 is configured to transmit data access commands(such as data read commands and data write commands) to the storagedevice 120. As part of such a data access command, the host computer 110transmits data 163 to the storage device 120, along with a logicalidentifier 165 that is associated with the data 163. The logicalidentifier 165 can comprise a numerical value, a character stringsvalue, or some combination thereof. The host computer 110 can beconfigured to use the logical identifier 165 to logically identify thedata 163. For example, the logical identifier 165 can be a logicaladdress that is used by the host computer 110 to uniquely address thedata 163.

The storage device controller 130 is configured to write the data 163 toa storage location in the storage medium 150. For example, in FIG. 1Athe data 163 is depicted as having been written to the storage location155 by the storage device controller 130. The storage device controller130 is configured to use a mapping table 140 to associate the logicalidentifier 165 with the storage location 155 where the data 163 isstored in the storage medium 150. The mapping table 140 can be used bythe storage device controller 130 to decouple the logical identifier 165for the data 163 from the physical storage location 155 where the datais actually stored.

The storage device controller 130 can be configured to manage themapping table 140. The mapping table 140 can comprise mapping entries(e.g. 143 and 145) that associate logical data identifiers (e.g., 165)with physical storage locations (e.g., 153 and 155) in the storagemedium 150 where data associated with the logical identifiers arestored. For example, in FIG. 1A, the mapping entry 145 associates thelogical identifier 165 with the storage location 155 where the data 163has been stored by the storage device controller 130. The storage devicecontroller 130 can be configured to use a mapping entry associated witha logical identifier to look up to a storage location where dataassociated with the logical identifier is physically stored. In at leastsome embodiments, the logical identifier 165 can be a logical zoneaddress maintained by the host computer 110, and the physical storageaddress can be an address for a physical storage zone in the storagemedium 150. The logical identifier and the physical address where datais stored can be different, and the logical identifier can be mapped toany physical storage location in the storage medium 150. For example,the mapping entry 145 associates the logical identifier 165 with thestorage location 155 where the data 163 is stored.

In at least some embodiments, the mapping table 140 can be provided tothe storage device controller 130 by the host computer 110 with one ormore logical data identifiers predefined. Additionally or alternatively,the storage device controller 130 can be configured to add mappingentries to the mapping table 140 as previously unencountered logicalidentifiers are received from the host computer 110. For example, uponreceipt of the data 163 and the associated logical identifier 165, thestorage device controller 130 can be configured to look up the logicalidentifier 165 in the mapping table 140. If a mapping entry for thelogical identifier 165 is not found in the mapping table 140, thestorage device controller 130 can create a new mapping entry (e.g., 145)for the logical identifier 165. After writing the data 163 to thestorage location 155, the storage device controller 130 can update themapping entry (e.g., 145) for the logical identifier 165 to map thelogical identifier 165 to the storage location 155.

One or more attributes can be associated with the data 163. In at leastsome embodiments, the one or more attributes for the data 163 can bestored in the mapping entry 145 in association with the logicalidentifier 165. One or more of these attributes can be used by thestorage device controller 130 to identify a storage location in thestorage medium 150 where the data 163 should be stored.

FIG. 1B depicts an example relocation of the data 163 within the storagedevice 120 based on an attribute 167 associated with the data 163. Theattribute 167 can be stored in the mapping entry 145 in association withthe logical identifier 165. The storage device controller 130 isconfigured to receive the attribute 167 from the host computer 110.Based on the attribute 167, the storage device controller writes thedata to another storage location (e.g., 153) in the storage medium 150.In at least some embodiments, multiple attributes can be associated withthe data 163. All of the attributes associated with the data 163 can bestored in the mapping entry 145 in association with the logicalidentifier 165. In such an embodiment, the data can be written to thestorage location 153 based on more than one of the attributes associatedwith the data 163.

The storage device controller 130 can be configured to update themapping entry 145 to associate the logical address 165 with the storagelocation 153 where the data 163 is now stored. Although the mappingtable 140 is depicted in FIGS. 1A-B as being stored in the storagedevice 120, in at least some embodiments, the mapping table 140 can bestored externally to the storage device 120.

In at least some embodiments, the storage medium 150 can be a zonedstorage medium and the storage locations (e.g., 153 and 155) canrepresent different storage zones. In such an embodiment, writing thedata to the storage location 153 can comprise moving the data to anotherstorage zone of the storage device 120.

In at least some embodiments, writing the data 163 based on theattribute 167 comprises moving the data 163 from the storage location155 to the storage location 153. The storage location 155 then can bemade available for storing other data. Alternatively, writing the data163 based on the attribute 167 comprises copying the data 163 to thestorage location 153. For example, the attribute 167 can indicate thatthe data 163 should be duplicated to one or more additional storagelocations. The mapping entry 145 can be updated to indicate that thestorage location 153 is a duplicated storage location for the data 163.In such an embodiment, the storage device controller 130 can beconfigured to write updates for the data 163 to all storage locationsassociated with the logical identifier 165 in the mapping table 140. Thestorage device controller 130 can be configured to read the data fromany one or more of the storage locations associated with the logicalidentifier 165.

In any of the examples described herein, a host computer can be a serveror other computing device that comprises a processor and is connected toa storage device. The host computer is connected to the storage deviceand is configured to transmit commands, such as data access commands(i.e., commands to perform data read and write operations) or the like,to the storage device. The host computer can be configured to transmitattributes for data to the storage device where the data is stored. Thehost computer can be configured to receive command responses from thestorage device. The connection can be a direct connection, such as acable or bus connection, an indirect connection, such as a connectionover a network, or some combination thereof. In scenarios where the hostcomputer is connected to more than one storage device, the variousconnections can be of the same type or different types.

In some embodiments, the host computer can comprise a storage controllerconnected to multiple storage devices. In at least some embodiments, thehost computer can be a computing device configured to provide a unifiedaccess point for multiple connected storage devices, such as a JBOD(“just a bunch of drives/disks”) device, a RAID array controller, etc.

In any of the examples described herein, a storage device can be adevice capable of storing data in one or more physical storage media.For example, the storage device can be a magnetic storage device, suchas a hard disk drive, that is capable of storing data in one or moremagnetic recording formats. Other examples of storage devices includeflash storage devices (such as NAND-type flash devices and NOR-typeflash devices), and random access data storage devices (such as DRAMdevices). Further examples of storage devices include non-volatile dualin-line memory modules (NVDIMMs). In at least some embodiments, thestorage device can be contained within a host computer.

In some embodiments, the storage device comprises multiple disparatestorage media. For example, the storage device can be a hard disk drivethat comprises one or more magnetic disks and an internal memory. Inanother example, the storage device comprises solid state storage andmagnetic storage. Other combinations of disparate storage media are alsopossible.

A storage device can organize storage locations into multiple storagezones. For at least some storage devices (such as zoned SMR storagedevices), random-access write operations can be performed by reading alldata from a zone, updating the retrieved data, and writing the updateddata back to the zone.

A storage device can include a storage device controller. A storagedevice controller can comprise one or more hardware components of thestorage device. The storage device controller can further comprise afirmware that controls the operation of one or more hardware componentsof the storage device. The storage device controller can be configuredto interface with an external communications channel in order to receiveand process commands from one or more computing devices.

Additionally or alternatively, the storage device controller can beimplemented at an intermediate layer between a host computer and thestorage device. Such an intermediate layer controller can comprisesoftware (such as a driver) and one or more processors, a system-on-chip(SoC), a field-programmable gate array (FPGA), and/or anapplication-specific integrated circuit (ASIC). In at least someembodiments, the storage device controller can comprise a host busadapter connected to the storage device and a communication bus of ahost computer.

In any of the examples described herein, a data block (or block of data)can be a sequence of data units, such as bytes, bits, etc., that has afixed size (sometimes referred to as a “block size”). In a storagedevice that supports data blocks, data is read from and/or written tothe storage device one block at a time. A data block can have a physicaladdress that identifies a position where it is stored in the storagedevice. A data block can also have a logical identifier, such as alogical block address (LBA), which can be used by external components toidentify and access the data block. By using logical addresses, thephysical storage locations of data blocks in the storage device canchange without having to notify or update any external components.

In any of the examples described herein, a data block can be an exampleof a storage location. Other example storage locations include datablock ranges, storage zones, etc.

FIG. 2 is a system diagram depicting example performance factors in anexample storage device 200. The storage device 200 comprises a magneticstorage medium 220, an actuator arm 212, and a read/write head 214.Factors that can impact storage device performance can include: seektime latency from head positioning on a target track, rotational latencyfrom the motor to turn the disk to exact location within the track,and/or transmission latency. Transmission latency is a metric of arealdensity (e.g., BPI (bits per inch)), as well as rotation speed.

By way of example, a seek time latency 241, rotational latency 243, andtransmission latency 245 for accessing example data 230 are depicted.The seek time latency 241 represents a time it takes to move theactuator arm 212 in order to position the read/write head 214 over atrack 223 where the data 230 is stored. The rotational latency 243represents a time it takes to rotate the storage medium 220 about acentral spindle 216 in order to position a first accessible portion ofthe data 230 under the read/write head 214. The transmission latency 245represents the time it then takes to access the data 230 using theread/write head 214.

In at least some cases, storage device transmission time can degrade(i.e., increase) as the area of the storage medium that is beingaccessed moves from an outer region (OD) of the storage medium (e.g., adisk platter) to an inner region (ID) of the storage medium. This canoccur when the OD has a higher number of sectors (or bits of storage)than the ID and the OD and ID have a same or similar aerial density.Thus, in such scenarios, more data can be transferred per rotation of astorage medium at the OD of the storage medium than the ID of thestorage medium.

FIG. 3A is a system diagram depicting an example system 300 configuredto relocate data 357 based on one or more associated attributes (e.g.,367). The example system 300 comprises a host computer 310 and a storagedevice 320. The storage device 320 comprises a storage device controller330 and a storage medium 350 comprising a magnetic disk 353. The storagedevice controller 330 is configured to use a mapping table 340 toassociate logical identifiers for various data with physical storagelocations in the storage medium 350 where the data are stored. Themapping table 340 comprises multiple mapping entries (e.g. 343 and 345)that associate various logical data identifiers with storage locationsin the storage medium 350. For example, in FIG. 3A the mapping entry 345associates a logical identifier (not shown) for the data 357 with thestorage location on the magnetic disk 353 where the data 357 is stored.

The host computer 310 is configured to transmit a data attribute 367that is associated with the data 357 to the storage device 320. In atleast some embodiments, the logical identifier for the data 357 can betransmitted by the host computer 310 to the storage device 320 incombination with the data attribute 367. The storage device controller330 can be configured to change a storage location of the data 357 basedon the data attribute 367. For example, the attribute 367 can identify adata access priority level for the data 357. Based on the accesspriority level of the data 357, the storage device controller 330 can beconfigured to change a storage location of the data 357 on the magneticdisk 353 to adjust a data access time for the data 357.

FIG. 3B depicts the example system 300, wherein the data 357 has beenmoved to another storage location that is relatively closer to an outerdiameter of the magnetic disk 353 than the previous storage location ofthe data 357 (depicted in FIG. 3A). In at least some embodiments, datastored relatively closer to the outer diameter of the magnetic disk 353can be accessed at a faster rate than data stored relatively closer toan inner diameter of the magnetic disk 353. Thus, the storage devicecontroller 330 can be configured to adjust a transmission time of thedata 357 by moving the data 357 closer to, or farther away from, theouter diameter of the magnetic disk 353.

In at least some embodiments, the host computer 310 can be configured tomonitor an access rate for the data 357. If the access rate for the data357 exceeds a specified threshold, the host computer 310 can transmit anattribute (e.g., 367) to the storage device 320 to increase the accesspriority level for the data 357. Responsive to receiving the attribute,the storage device controller 330 can relocate the data 357 to a storagelocation that can be accessed at a faster access rate than the currentstorage location of the data 357 (such as a storage location that iscloser to the outer diameter of the magnetic disk 353). Subsequently, ifthe access rate for the data 357 falls below the specified threshold,the host computer can transmit an updated attribute to the storagedevice to decrease the access priority level for the data 357.Responsive to receiving the updated attribute, the storage devicecontroller 330 can relocate the data 357 to another storage locationthat can be accessed at a slower access rate (such as a storage locationthat is closer to an inner diameter of the magnetic disk 353).

FIG. 4 is a flowchart of an example method 400 for storing data in astorage device based on an attribute associated with the data. Any ofthe example system described herein can be used to perform the examplemethod 400. For example, all or part of the example method 400 can beperformed by a host computer and a storage device as described herein.

At 402, a data write command is received at a storage device controller.In at least some embodiments, the storage device controller can compriseone or more components of a storage device, one or more componentsexternal to the storage device, or some combination thereof. The datawrite command comprises data to be written to the storage device. In atleast some embodiments, the data write command further comprises alogical identifier (such as a logical address, etc.) associated with thedata. For example, the logical identifier can comprise analpha-numerical value that is used by a host computer to uniquelyidentify the data. In a particular example, the data represents alogically distinct data object and the logical identifier is a uniqueidentifier for the data object.

At 404, the data is written to a first storage location of the storagedevice. The storage device can comprise a mapping table that can be usedby the storage device to correlate logical data addresses with physicaladdresses of storage locations in the storage device. In an embodimentwhere the data write command comprises a logical identifier associatedwith the data, and the storage device comprises a mapping table, themapping table can be updated to associate the logical identifier withthe first storage location. In at least some embodiments, the mappingtable can be stored in a same storage medium as the first storagelocation where the data is stored. Alternatively, the mapping table andthe first storage location can be stored in separate storage media ofthe storage device.

At 406, an attribute associated with the data is received at the storagedevice controller. The attribute can describe one or morecharacteristics of the data. For example, the attribute can indicatewhether an observed access rate for the data is above or below thespecified threshold. Additionally or alternatively, the attribute canindicate that a write access endurance for the storage location wherethe data is stored is above or below a specified threshold. Additionallyor alternatively, the attribute can indicate one or more storagecharacteristics of the data. For example the attribute can indicate thatthe associated data should be duplicated to multiple storage locationsin the storage device.

At 408, the data is written to a second storage location of the storagedevice based on the attribute. In at least some embodiments, theattribute can indicate that an access rate for the data is above aspecified threshold. It can be determined that the second storagelocation can be accessed at a higher access rate than the first storagelocation. For example, in an embodiment where the storage devicecomprises a magnetic disk, it can be determined that a storage locationthat is relatively closer to the outer diameter of the magnetic diskthan the data's current storage location can be accessed at a higherdata access rate than the current storage location.

Additionally or alternatively, the attribute can indicate that a writeaccess endurance for the first storage device location is below aspecified threshold. In such an embodiment, writing the data to thesecond storage location based on the attribute can comprise determiningthat the second storage location has a write access endurance that isabove the specified threshold. For example, in some storage devices thestorage integrity of at least some storage locations can degrade as datais repeatedly written to them. After data is written to such a storagelocation a certain number of times, the effectiveness of subsequent datawrite operations targeting the storage location can be ineffective orunreliable. In such a scenario, write operations targeting the firststorage location can be tracked and, when data has been written to thestorage location a sufficient number of times to exceed the specifiedthreshold, the attribute can be received, indicating that the firststorage location has exceeded the write access endurance threshold. Thedata can then be moved to another storage location that has not exceededthe write access endurance the actual. In at least some embodiments, astorage device controller of the storage device can internally trackwrites for various storage locations and set the attribute to indicatethat the first storage location has exceeded the write endurancethreshold.

In at least some scenarios, writing the data to the second storagelocation can comprise copying the data to the second storage location.For example, the attribute can indicate that the associated data shouldbe duplicated to multiple storage locations. Storing the dataredundantly in multiple, separate storage locations in some cases canincrease an overall data access rate of the data. This can occur, forexample, when the data is stored in multiple locations on a magneticdisk, thereby reducing the average seek time to move the actuator arm toa track where a copy of the data is stored. The attribute can be storedon the storage device in association with the logical identifier for thedata. One a subsequent update to the data is received that includes thelogical identifier, the attribute can be used to determine that the datais duplicated and that the update must be applied to both the firststorage location and the second storage location.

In at least some embodiments, the storage device comprises multiplestorage zones and writing the data to the second storage locationcomprises moving the data from one zone of the storage device to anotherzone of the storage device. In at least some such embodiments, data iswritten to different zones of the storage device using differentrecording formats having different data access rates and/or differentstorage densities. For example, in an embodiment where the storagedevice comprises a magnetic storage medium, the first storage locationcan be part of a first zone of the storage device where data is writtenusing an SMR format, and the second storage location can be part of asecond zone of the storage device for a data is written using aperpendicular magnetic recording (PMR) format. In such an embodiment,data can be stored at a higher storage density in the first zone of thestorage device than in the second zone, but data can be accessed (in atleast some scenarios) at a faster data access rate in the second storagezone. Additionally or alternatively, the storage device can compriseseparate storage zones located on separate storage media. For example,the storage device can be a hybrid storage device comprising a magneticstorage medium in combination with a solid state storage medium, aninternal memory, etc.

In an embodiment where the data write command comprises a logicalidentifier associated with the data, a mapping table can be updated toassociate the logical identifier with the second storage location.Subsequently, a data read command, requesting the data, can be processedusing the mapping table entry. For example, the data read command cancomprise the logical identifier for the data. The logical identifier canbe used, along with the mapping table, to read the data from the secondstorage location. The logical identifier can be used as a look up indexinto the mapping table, where the logical identifier is associated witha physical storage location identifier for the second storage location.The physical storage location identifier can then be used to retrievethe data from the second storage location of the storage device.

In at least some embodiments, the logical identifier for the data can bean identifier that is used by a host computer to uniquely identify thedata. The host computer can transmit the data read command, comprisingthe logical identifier for the data, to the storage device. The storagedevice can use the logical identifier to look up the second storagelocation using the mapping table stored internally in the storagedevice. In a different or further embodiment, the mapping table can bereceived at the storage device from the host computer and stored in astorage medium of the storage device. For example, the host computer canbe configured to initialize the storage device with an initial versionof the mapping table that is pre-loaded with logical identifiers thatare associated with various data that the host computer intends to storeon the storage device.

In at least some embodiments, the storage device controller candetermine that the data cannot be stored in a storage location thatsatisfies a requirement of the attribute. If such a determination ismade, the storage device controller can transmit a notification to aconnected host computer, indicating that the requirement of theattribute cannot be satisfied. For example, in a scenario where theattribute indicates a requested access rate for the data, but thestorage device is unable to locate an available storage location thatcan be accessed at the requested access rate, the storage device cantransmit a notification to the host computer, indicating that the accessrate requirement of the attribute cannot be met. For example, in ascenario where the attribute indicates a write endurance for the data isbelow a specified threshold, but the storage device is unable to locatean available storage location with a write endurance above the specifiedthreshold, the storage device can transmit a notification to the hostcomputer, indicating that the write endurance requirement of theattribute cannot be met. For example, in a scenario where the attributeindicates that the data should be duplicated, but the storage device isunable to locate an available storage location to which the data can beduplicated, the storage device can transmit a notification to the hostcomputer, indicating that the duplication requirement of the attributecannot be met.

FIG. 5 is a flowchart of an example method 500 for updating an attributefor data stored in a storage device based on a data access rate of thedata. Any of the example systems described herein can be used to performthe example method 500. For example, all or part of the example method500 can be performed by a host computer, a storage device controller, orsome combination thereof.

At 502, an access rate for the data stored in the storage device ismonitored. The access rate for the data can be monitored by a hostcomputer configured to transmit data access commands to the storagedevice. Additionally or alternatively, the access rate for the data canbe monitored by a controller of the storage device. The monitoring theaccess rate for the data can comprise tracking a number of data accessrequests that identify the data over a given period of time (such as anhour, a minute, a second, etc.). In at least some embodiments, the datais associated with the logical identifier. This logical identifier canbe used to uniquely identify the data and to track data access requestsfor the data. For example, each time a data access request (such as adata read request, a data write request, etc.) is received that containsthe logical identifier for the data, a counter associated with the datacan be incremented. After the specified time period has elapsed, acurrent value of the counter can be retrieved and used as a current dataaccess rate for the data. The counter, and a timer used to track thetime, can then be reset and subsequently used to track a new data accessrate for the data for a subsequent time period.

At 504, it is determined whether the data access rate for the data isabove a specified upper threshold rate. The specified upper thresholdrate can be specified by an administrator. For example, the specifiedupper threshold can be defined by an administrator in a host computerconnected to the storage device. Alternatively, the administrator candefine the specified upper threshold in a centralized storage location,and the host computer can be configured to retrieve the specified upperthreshold from the centralized storage location.

If the data access rate for the data is above the specified threshold,then at 506 an attribute associated with the data is updated to increasean access priority of the data. Increasing the access priority of thedata can comprise moving the data to another storage location in thestorage device. For example, the data can be moved to a storage locationthat is relatively closer to an outer diameter of a magnetic disk of thestorage device then the data's current storage location. Additionally oralternatively, the data can be moved to a storage location in adifferent zone of the storage device that can be accessed at a fasteraccess rate than the data's current storage location. Additionally oralternatively, the data can be moved to a different storage medium thatcan be accessed at a faster access rate than the data's current storagelocation.

If the data access rate for the data is not above the specified upperthreshold, then at 508 it is determined whether the data access rate isbelow a specified lower threshold rate. The specified lower thresholdrate can be specified by an administrator. For example, the specifiedlower threshold can be defined by an administrator in a host computerconnected to the storage device. Alternatively, the administrator candefine the specified lower threshold in a centralized storage location,and the host computer can be configured to retrieve the specified lowerthreshold from the centralized storage location.

If the data access rate is below the specified lower threshold rate,then at 510 the attribute associated with the data is updated todecrease the access priority level of the data. As with updating theattribute at 506 to increase the access priority level of the data,decreasing the access priority level for the data can comprise movingthe data to another storage location in the storage device. For example,the data can be moved to a storage location that is relatively closer toan inner diameter of a magnetic disk of the storage device than thedata's current storage location. Additionally or alternatively, the datacan be moved to a storage location in a different zone of the storagedevice that can be accessed at a slower access rate than the data'scurrent storage location. Additionally or alternatively, the data can bemoved to a different storage medium that can be accessed at a sloweraccess rate than the data's current storage location. As a trade-off forthe slower access rate, the different storage zone and/or storage mediummay have a relatively higher storage density than the zone/medium wherethe data is currently stored.

If the access rate for the data is not above the specified upperthreshold and is also not below the specified lower threshold, or afterthe attribute for the data is updated at 506 or 510, control returns to502. Thus, the example method 500 can be repeated to adjust the accesspriority level of the data as the access rate of the data changes overtime. In embodiments where changing the access priority level of thedata comprises changing a storage location of the data in the storagedevice, the storage location of the data can be changed dynamically asthe data access rate of the data changes over time.

Although a single upper threshold and a single lower threshold arediscussed above, in at least some embodiments, multiple upper thresholdsand multiple lower thresholds can be specified. For example, multipleaccess rate ranges can be defined and associated with different accesspriority levels. When the access rate for the data exceeds an upperthreshold for its current access priority level, it can be promoted to anext-highest access priority level. Promoting the data to thenext-highest access priority level can comprise updating the attributefor the data at 506. On a subsequent iteration of the example method500, an upper threshold for the data's new access priority level can beused at 504. In at least some embodiments, the lower threshold for thedata's new access priority level can be the same as the upper thresholdof the data's previous access priority level.

The multiple access rate ranges can be defined and associated accesspriority levels can be specified by an administrator. For example, themultiple access rate ranges can be defined and associated accesspriority levels can be defined by an administrator in a host computerconnected to the storage device. Alternatively, the administrator candefine the multiple access rate ranges. The multiple access ranges canbe defined and associated access priority levels in a centralizedstorage location. The host computer can be configured to retrieve themultiple access rate ranges from the centralized storage location.

If the access rate for the data drops below the lower threshold for thedata's current level, then the data can be demoted to a next-lowestaccess priority level. On a subsequent iteration of the example method500, a lower threshold for the data's new access priority level can beused at 508. In at least some embodiments, the upper threshold for thedata's new access priority level can be the same as the lower thresholdof the data's previous access priority level.

FIG. 6 is a system diagram depicting an example storage device 620configured to store data 613 based on an associated attribute 617. Theexample storage device 620 comprises a storage device controller 630 anda storage medium 650. The storage medium 650 comprises multiple storagelocations (e.g., 653) where data can be stored.

The storage device controller 630 can be configured to receive a datawrite command 610 comprising the data 613, a logical identifier for thedata 615, and the attribute 617 that is associated with the data. Thestorage device controller 630 is configured to identify a storagelocation 653 in the storage medium 650 based on the attribute 617 and towrite the data 613 to the storage location 653. The attribute 617 canindicate one or more storage-related characteristics of the data 613.For example, the attribute 617 can indicate a desired access level forthe data 613. In such an embodiment, identifying the storage location653 for the data 613 can comprise determining that a data access rateassociated with the storage location 653 meets or exceeds an access raterequirement of the desired access level. Additionally or alternatively,the attribute 617 can indicate that the data 613 should be duplicated tomultiple storage locations of the storage medium 650. In such anembodiment, the data 613 can be written to multiple storage locations ofthe storage medium 650. In at least one such embodiment, the attribute617 can indicate a duplication level associated with the data 613 thatcan be used by the storage device controller 630 to determine a numberof copies of the data 613 to store in the storage medium 650.

The storage device controller 630 is further configured to create amapping record 640 associating the storage location 653 with the logicalidentifier 615 for the data 613. The storage device controller 630 canprocess a subsequent data read command (not shown) comprising thelogical identifier 615 by using the mapping record 640. Using themapping record 640, the storage device controller 630 can determine thatthe data 613 associated with the logical identifier 614 is stored in thestorage location 653. In at least some embodiments, the storage devicecontroller 630 is further configured to store the attribute 617 in themapping record 640. In such an embodiment, the storage device controller630 can use the mapping record 640 to determine what attribute orattributes is/are associated with data stored in the storage location653 and/or are associated with the logical identifier 615. For example,the mapping record 640 can support a two-way lookup where either thelogical identifier or a physical address of the storage location can beused by the storage device controller to retrieve the mapping record640.

In a different or further embodiment, the mapping record 640 can bestored in one or more storage locations of the storage medium 650. In anembodiment where the attribute 617 indicates that the data 613 should beduplicated to multiple storage locations in the storage medium 650, themultiple storage locations can be associated with the logical identifier615 in the mapping record 640.

The storage device controller 630 can be configured to receive anupdated attribute (not shown) associated with the data 613. Upon receiptof the updated attribute, the storage device controller 630 can identifyanother storage location in the storage medium 650 based on the updatedattribute, and to move the data 613 to the other storage location. Forexample, the updated attribute can indicate a new desired data accesslevel for the data 613. Storage device controller 630 can determinewhether the current storage location 653 of the data 613 has a dataaccess rate that satisfies the requirements of the new desired dataaccess level. If it cannot, then the storage device controller 630 canidentify another storage location that has a data access rate that cansatisfy the requirements of the new desired data access level. Thestorage device controller 630 then can move the data 613 to the otherstorage location. The other storage location can be located closer to anouter diameter (or inner diameter) of the magnetic disk of the storagemedium 650 than the storage location 653. Additionally or alternatively,the other storage location can be located in different zone of thestorage medium 650 than the storage location 653. Alternatively, theother storage location can be located in another storage medium (notshown) of the storage device 620.

Additionally or alternatively, the updated attribute can indicate that awrite access endurance for the storage location 653 is below a specifiedthreshold. For example, the storage location 653 may support a limitednumber of data write operations before the storage location 653 isrendered unusable, or before mandatory maintenance must be performed onthe storage location 653. In such an embodiment, the identifying theother storage location in the storage medium 650 can comprisedetermining that the other storage location has a write access endurancethat is above the specified threshold.

In at least some cases, the storage device controller 630 can detectthat the write access endurance for the storage location 653 is belowthe specified threshold and can set the attribute in the mapping record640 to indicate this. If a subsequent data write command is receivedthat comprises the logical identifier 615 and an updated version of thedata 613, the storage device controller 630 can detect the presence ofthe attribute in the mapping record 640. Rather than writing the updatedversion of the data 613 to the storage location 653, the storage devicecontroller 630 can locate another storage location and write the updatedversion of the data 613 to the another storage location. In at leastsome embodiments, the storage device controller 630 can then mark thestorage location 653 as unusable and/or schedule the storage location653 for a mandatory maintenance operation to reclaim the storagelocation.

After moving the data 613 to the another storage location (or writingthe updated version of the data 613 to the another storage location),the storage device controller 630 can update the mapping record 640 toremove the association between the logical identifier 615 and thestorage location 653, and to associate the logical identifier 615 withthe another storage location instead. Thus, the logical identifier 615can still be used to access the data using subsequent data accesscommands even though the storage device controller 630 has changed anunderlying storage location of the data 613 based on the attribute.

FIG. 7 is a chart depicting a relationship between data access time andstorage location on a magnetic storage medium. The x-axis of FIG. 7represents ranges of storage locations on a magnetic disk. The storagelocations are represented in FIG. 7 as fractions of a total capacity ofthe magnetic disk. An outer diameter (OD) is represented as 0% of themagnetic disk's total capacity, and an inner diameter (ID) isrepresented as 100% of the magnetic disk's total capacity. The y-axis ofFIG. 7 depicts a range of data access times, measured in mebibytes (MiB)per second. The line 710 represents average data access times when datais accessed at the various storage locations on the magnetic disk. Ascan be seen in FIG. 7, data access performance (as indicated inMiB/second) can degrade in some cases when the accessed storage locationmoves from locations near the OD to locations near the ID. This mayoccur, for example, if the linear velocity is higher at the OD comparedto the ID; and can result in higher data transfer rates at the OD, ascompared to the ID.

At least some SMR storage devices are zoned block devices (ZBDs). A ZBDdivides drive space into multiple zones of a same or similar size (e.g.,zones of 256MiB). At least some ZBDs do not allow random writeoperations within a zone; instead only allowing sequential writeoperations within the zone. This behavior can be similar to NAND blocksin an SSD, where data must be written in block-sized chunks. Themanagement of zones in at least some zoned storage devices can besimilar to the management of a flash translation layer (FTL) used bysome NAND-based storages.

FIG. 8 is a diagram depicting example files stored in various locationsof a storage device in various states of fragmentation. In at least somescenarios, a file system can store a file in a way such that the file isdivided into many smaller chunks (e.g., clusters of a same or similarsize (such as 4 kilobytes, etc.)). These chunks can be scattered acrossvarious storage locations of the storage device, which may degrade dataaccess performance for the file. For example, in FIG. 8 multiple datachunks are scattered across an example storage medium 800. 810 is achunk of a first file (File A), 820 is a chunk of a second file (FileB), 830 is a chunk of a third file (File C), and 840 is a chunk of afourth file (File D). Although some chunks for a given file are storedcontiguously, others are stored elsewhere in the storage medium 800.Rather than having all the data for each file stored contiguously,various chunks of the multiple files are interspersed. Thus, the filesare considered to be fragmented.

Such fragmentation can be exacerbated as time goes on. For example, afile system may divide a file into many smaller chunks. These chunks canbe scattered all over the storage medium 800, which can degrade the dataaccess performance of the storage medium 800.

FIG. 9 is a diagram depicting an example logical-to-physical addressmapping 900 for a zoned storage device. The example mapping 900 can beused in any of the examples described herein to define an initialmapping between a logical address space and the storage zones of one ormore storage devices.

FIG. 9 depicts a range of logical block addresses (LBA 0-LBA CAP−1) thatare mapped to physical storage location addresses in a zoned storagedevice (represented by Zone 0-Zone n−1), where “CAP” represents acapacity, or total number of storage locations, in the storage device,and “n” represents the number of zones in the storage device. Aone-to-one mapping can be used, wherein there is a one-to-onecorrelation between the logical addresses and the physical storagelocation addresses in the zoned storage device. Using such a mapping,each zone in the storage device can be represented by a range of logicaladdresses. Such a mapping can be used to facilitate indirect addressingfor data stored in a storage device. For example, a host computer can beconfigured to transmit data access commands that identify data usinglogical addresses. The logical-to-physical mapping can be used toidentify physical storage locations associated with the logicaladdresses.

In at least some embodiments, a controller of the storage device can beconfigured to create and/or store the logical-to-physical addressmapping. Additionally or alternatively, the logical-to-physical mappingcan be created by a host computer connected to the storage device.

Some storage devices comprise multiple storage zones. Such storagedevices can be referred to as zoned storage devices. An example zonedstorage device is a ZBD. A ZBD can divide drive space into multiplezones (such as 256 megabyte chunks). In at least some zoned storagedevices (such as those that support shingled magnetic recording (SMR)storage formats), a zone can be regarded as a fundamental storage unit(or block) for writing data to the storage device. For example, a randomwrite operation may not be allowed within a zone. To update data withina zone, all data is read from the zone, modified, and then written backto the same zone (or a different zone). Other example ZBDs include solidstate storage devices (SSD's) that write data to NAND storage a block ata time. In at least some embodiments, management of zone storage can beimplemented at an intermediate layer (such as an FTL for a NAND-basedstorage device, or the like). Such an intermediate layer can beimplemented at a host computer, a storage device controller, a busadapter, etc.

A mapping table can be used to map virtual (or logical) addresses tophysical storage locations (such as data blocks, zones, etc.) within astorage device. Such a mapping of physical addresses (e.g., physicalzones) to logical addresses (e.g., logical block addresses) that areused by a host computer can be handled dynamically by the storagedevice.

In at least one embodiment, a drive controller can run an algorithm tomonitor zone temperature (i.e. read/write access frequency). The drivecontroller can relocate “cold data” (data with a relatively low accessfrequency) to a zone closer to an inner diameter of the ZBD and canrelocate “hot data” (data with a relatively high access frequency) to azone closer to an outer diameter of the ZBD. This process can bereferred to as “auto-tiering” of the stored data. This operation can betransparent to a host computer connected to the ZBD. A mapping table canbe used to decouple logical data addresses used by the host computerfrom the underlying zone storage locations where the data is stored inthe ZBD. Data within the same zone can have a likelihood of all beingwritten at a same or similar time, and the data in the zone may have asimilar data temperature and life time. Using at least some of thedisclosed embodiments, the performance and user experience can improveby relocating entire zones of data on a storage medium based onassociated data temperatures. Such a benefit may be especiallypronounced in drives with relatively larger storage capacities, butrelatively lower I/O per second (IPS) per terabyte (TB).

In a different or further embodiment, a storage device that maps logicalidentifiers to storage locations using techniques described herein canprovide a thin provisioning of the storage device. For example, acontroller of the storage device can report that the device has morestorage locations available than it actually does. Additionally oralternatively, zones can be provisioned using a PMR format until certainspace utilization is reached. This can be done to take advantage ofPMR's superior random-access write performance, as compared to SMR. Thecontroller can then start to convert PMR zones to SMR transparently asthe storage device's available storage capacity falls below a giventhreshold.

In a different or further embodiment, certain host zone addresses can bepinned to specific physical zone locations explicitly. This can be done,for example, for the sake of better performance for accessing the dataassociated with the host zone addresses. Other benefits are alsopossible. Pinning a host zone address can be done, for example, byspecifying an attribute for the data associated with the host zoneaddress that indicates that the data should be stored in a specificstorage location on the storage device and should not be relocated. Suchan attribute can be specified as part of a command to store the data inthe storage device. Additionally or alternatively, such an attribute canbe specified as part of a separate command, wherein the attribute isprovided in association with an identifier for the data.

In a different or further embodiment, a host can assign attributes tological storage addresses. The attributes can specify different levelsof performance, endurance, redundancy, data reliability, etc. A storagedevice controller can be configured to manage data associated with agiven logical address based on the associated attributes. For example,the storage device controller can write data to a storage location inthe storage device based on one or more associated attributes providedby the host computer. In a particular example, an attribute can indicatethat associated data has a high data access performance requirement.Based on this attribute, the controller can write the associated data toa storage location that has a relatively higher data access rate (suchas an OD of a magnetic disk, an internal memory, etc.). In a differentor further example, an attribute can indicate that associated data has ahigh reliability requirement. Based on such an attribute, the storagedevice controller can assign a plurality of physical storage locationsto the logical address associated with the data and can duplicate theassociated data in the plurality of storage locations.

In at least one embodiment, a storage device controller can beconfigured to scan storage media of the storage device and report aphysical address count of all the available physical blocks andcorresponding zones. A host computer can then create a logicalassociation for each physical zone on the device with logical zoneaddress. Such associations can be stored in a data structure (such as amapping table) created by the host computer. Once the mapping table iscreated, in at least some embodiments, it can be stored on one or morestorage media of the storage device. The host computer can be configuredto recover the mapping table from the storage device in the event ofdata loss.

The host computer can be configured to continuously monitor input/output(TO) attributes associated with various data (e.g., the attributes canbe associated with logical addresses associated with the data) and placethe data in physical locations on the storage media of the storagedevice based on the attributes. This can allow for data movement withinthe device without impacting the host's logical addressing for the data.In at least some cases, this can be done by a storage device controllerwithout the use of resources of the host computer. For example, thestorage device controller can be configured to move data to anotherphysical storage location, and update a mapping in the mapping table toassociate a logical address of the data with the new storage location.Thus, the storage device controller can optimize storage locations fordata based on associated attributes without affecting the hostcomputer's data addressing scheme.

In an embodiment where the storage device comprises a magnetic disk, thedata on the device can be intelligently placed on the magnetic diskbased on performance attributes (e.g., with respect to an OD and/or IDof the magnetic disk).

In at least some embodiments, a Global Mapping Layer (GML) can be usedto extend a logical address space to cover physical storage locations inmultiple storage devices. The storage devices need not necessarily be ofa single type. For example, a given logical address space can covermultiple magnetic disk storage devices, multiple solid state storagedevices, multiple tape storage devices, or any combination thereof. Inat least some embodiments, data can be moved from a storage location inone storage device to a storage location in another storage device basedon one or more attributes associated with the data. For example, datawith an attribute that indicates the data is in high demand can berelocated from a storage device with a relatively lower data access rate(such as a magnetic disk drive) to a storage device with a relativelyhigher data access rate (such as a solid-state storage device). Since asingle logical address space is used by the host computer, suchrelocations across storage devices need not require any change toapplications accessing the data.

An underlying controller or adapter may be used by the host computer toroute data access requests to the appropriate storage device based on amapping table that maps the logical addresses in the logical addressspace to the physical storage locations in the various storage devices.In at least some embodiments, an agent (such as a controller, adapter,etc.) can be configured to relocate data across the storage devices andupdate a mapping table to associate logical addresses of the data withtheir new storage locations. Thus, data can be moved across storagedevices based on performance requirements with any changes to thelogical address space used by the host computer to access the data.

FIG. 10 is a system diagram depicting an example storage device 1000comprising multiple storage zones 1022-1024. The example storage device1000 can be used as a storage device in any of the examples describedherein.

Storage device 1010 comprises a magnetic disk 1020 that can be rotatedon a spindle 1016. The storage device 1010 also comprises a moveableactuator arm 1012 with a read/write head 1014. The actuator arm 1012 canbe rotated on an actuator axis (not shown) by an actuator (not shown) tomove the read/write head 1014 over different portions of the magneticdisk 1020. The storage device 1010 is configured to write data to and toread data from the magnetic disk 1020 using the read/write head 1014.The read/write head 1014 can comprise a single head that can performboth read and write operations. Alternatively, the read/write head 1014can comprise two separate heads for reading and writing, respectively.The storage device 1010 can be configured to use the read/write head1014 to write data to the magnetic disk 1020 in multiple concentriccircular tracks as the magnetic disk is rotated on the spindle 1016.

A storage device controller 1030 can send write and read access commandsto the storage device 1010 to write data to and read data from thestorage device 1010. The storage device controller 1030 can specify alocation on the magnetic disk 1020 at which the data is to be written orfrom which the data is to be read. For example, each unit of data storedon the magnetic disk 1020 can have a unique address, such as an LBA,that is associated with a location on the magnetic disk 1020 where thedata is stored. The storage device controller 1030 can be configured tomap such logical addresses to physical storage locations of the data(such as a physical block address). Additionally or alternatively, thestorage device controller 1030 can be configured to store attributes inassociation with data stored on the magnetic disk 1020. For example, theattributes can be stored on the magnetic disk 1020 in association withthe logical addresses and/or the physical addresses. Such attributes canbe used by the storage device controller 1020 to determine if/when tochange physical storage locations of data associated with the attributesas described herein. In at least some embodiments, data can be writtento the storage device 1010 using one or more data write operations thatinclude the data to be written and one or more attributes associatedwith the data.

The storage device controller 1030 can designate separate zones1022-1024 on the magnetic disk 1020, on which data can be stored. A zonecan comprise all or part of one or more circular tracks of the magneticdisk 1020. In at least some embodiments, data is written to the storagezones 1022-1024 as separate units. For example, in an embodiment wheredata is written to the magnetic disk 1020 using an SMR format, bufferareas can be placed between the zones 1022-1024 so that separate zonescan be targeted by write operations. (Due to the overlapping nature ofSMR formats, updating data requires rewriting data that is “overlapped”by the data being updated. By separating the magnetic disk 1020 intozones, only the zone containing the updated data has to be rewritten.)

The storage device controller 1030 comprises an integrated circuit (notshown) running a firmware 1040 containing various data managementmodules (not shown) that can be used by the storage device controller1030 to perform various data management operations (such as dataattribute-related operations, data relocation operations, etc.). Thestorage device controller 1030 can use such data management modules toprocess data access commands to retrieve data from, and write data to,the storage medium 1020. For example, the data access command module1042 can comprise instructions for operating the actuator arm 1012,operating the spindle 1016, and operating the read/write head 1014 toretrieve data from, and write data to, the magnetic disk 1020.

The storage device controller 1030 can use one or more of the firmwaremodules to relocate data from one of the storage zones 1022-1024 toanother of the storage zones 1022-1024. Relocating data from one storagezone to another storage zone can comprise retrieving the data fromstorage locations in a source storage zone using one or more randomaccess read operations and/or one or more sequential read operations,and writing the data to a target storage zone using one or moresequential write operations. A logical address-to-physical addressmapping for the relocated data can be updated to indicate that the dataassociated with the logical address is now stored in the target storagezone. In at least some embodiments, data associated with an attributethat indicates the data has a high I/O temperature can be moved fromzone located closer to the spindle 1016 (e.g., zone 1024) to a zonelocated further away from the spindle 1016 (e.g., zone 1022).

FIG. 11 depicts a generalized example of a suitable computingenvironment 1100 in which the described innovations may be implemented.The computing environment 1100 is not intended to suggest any limitationas to scope of use or functionality, as the innovations may beimplemented in diverse general-purpose or special-purpose computingsystems. For example, the computing environment 1100 can be any of avariety of computing devices (e.g., desktop computer, laptop computer,server computer, tablet computer, etc.).

With reference to FIG. 11, the computing environment 1100 includes oneor more processing units 1110, 1115 and memory 1120, 1125. In FIG. 11,this basic configuration 1130 is included within a dashed line. Theprocessing units 1110, 1115 execute computer-executable instructions. Aprocessing unit can be a general-purpose central processing unit (CPU),processor in an application-specific integrated circuit (ASIC) or anyother type of processor. In a multi-processing system, multipleprocessing units execute computer-executable instructions to increaseprocessing power. For example, FIG. 11 shows a central processing unit1110 as well as a graphics processing unit or co-processing unit 1115.The tangible memory 1120, 1125 may be volatile memory (e.g., registers,cache, RAM), non-volatile memory (e.g., ROM, EEPROM, flash memory,etc.), or some combination of the two, accessible by the processingunit(s). The memory 1120, 1125 stores software 1180 implementing one ormore innovations described herein, in the form of computer-executableinstructions suitable for execution by the processing unit(s).

A computing system may have additional features. For example, thecomputing environment 1100 includes storage 1140, one or more inputdevices 1150, one or more output devices 1160, and one or morecommunication connections 1170. An interconnection mechanism (not shown)such as a bus, controller, or network interconnects the components ofthe computing environment 1100. Typically, operating system software(not shown) provides an operating environment for other softwareexecuting in the computing environment 1100, and coordinates activitiesof the components of the computing environment 1100.

In at least some embodiments, the computing environment 1100 can be ahost computer as described herein.

The tangible storage 1140 may be removable or non-removable, andincludes magnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, orany other medium which can be used to store information in anon-transitory way and which can be accessed within the computingenvironment 1100. The storage 1140 stores instructions for the software1180 implementing one or more innovations described herein. In at leastsome embodiments, the tangible storage 1140 can comprise one or morestorage devices as described herein.

The input device(s) 1150 may be a touch input device such as a keyboard,mouse, pen, or trackball, a voice input device, a scanning device, oranother device that provides input to the computing environment 1100.The output device(s) 1160 may be a display, printer, speaker, CD-writer,or another device that provides output from the computing environment1100.

The communication connection(s) 1170 enable communication over acommunication medium to another computing entity. The communicationmedium conveys information such as computer-executable instructions,audio or video input or output, or other data in a modulated datasignal. A modulated data signal is a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, communicationmedia can use an electrical, optical, RF, or other carrier.

Although the operations of some of the disclosed methods are describedin a particular, sequential order for convenient presentation, it shouldbe understood that this manner of description encompasses rearrangement,unless a particular ordering is required by specific language set forthbelow. For example, operations described sequentially may in some casesbe rearranged or performed concurrently. Moreover, for the sake ofsimplicity, the attached figures may not show the various ways in whichthe disclosed methods can be used in conjunction with other methods.

Any of the disclosed methods can be implemented as computer-executableinstructions stored on one or more computer-readable storage media(e.g., one or more optical media discs, volatile memory components (suchas DRAM or SRAM), or non-volatile memory components (such as flashmemory or hard drives)) and executed on a computer (e.g., anycommercially available computer, including smart phones or other mobiledevices that include computing hardware). The term computer-readablestorage media does not include communication connections, such assignals and carrier waves. Any of the computer-executable instructionsfor implementing the disclosed techniques as well as any data createdand used during implementation of the disclosed embodiments can bestored on one or more computer-readable storage media. Thecomputer-executable instructions can be part of, for example, adedicated software application or a software application that isaccessed or downloaded via a web browser or other software application(such as a remote computing application). Such software can be executed,for example, on a single local computer (e.g., any suitable commerciallyavailable computer) or in a network environment (e.g., via the Internet,a wide-area network, a local-area network, a client-server network (suchas a cloud computing network), or other such network) using one or morenetwork computers.

For clarity, only certain selected aspects of the software-basedimplementations are described. Other details that are well known in theart are omitted. For example, it should be understood that the disclosedtechnology is not limited to any specific computer language or program.For instance, the disclosed technology can be implemented by softwarewritten in C++, Java, Perl, assembly language, or any other suitableprogramming language. Likewise, the disclosed technology is not limitedto any particular computer or type of hardware. Certain details ofsuitable computers and hardware are well known and need not be set forthin detail in this disclosure.

It should also be well understood that any functionality describedherein can be performed, at least in part, by one or more hardware logiccomponents, instead of software. For example, and without limitation,illustrative types of hardware logic components that can be used includeField-programmable Gate Arrays (FPGAs), Program-specific IntegratedCircuits (ASICs), Program-specific Standard Products (ASSPs),System-on-a-chip systems (SOCs), Complex Programmable Logic Devices(CPLDs), etc.

Furthermore, any of the software-based embodiments (comprising, forexample, computer-executable instructions for causing a computer toperform any of the disclosed methods) can be uploaded, downloaded, orremotely accessed through a suitable communication means. Such suitablecommunication means include, for example, the Internet, the World WideWeb, an intranet, software applications, cable (including fiber opticcable), magnetic communications, electromagnetic communications(including RF, microwave, and infrared communications), electroniccommunications, or other such communication means.

The disclosed methods, apparatus, and systems should not be construed aslimiting in any way. Instead, the present disclosure is directed towardall novel and nonobvious features and aspects of the various disclosedembodiments, alone and in various combinations and subcombinations withone another. The disclosed methods, apparatus, and systems are notlimited to any specific aspect or feature or combination thereof, nor dothe disclosed embodiments require that any one or more specificadvantages be present or problems be solved.

In view of the many possible embodiments to which the principles of thedisclosed invention may be applied, it should be recognized that theillustrated embodiments are only examples of the invention and shouldnot be taken as limiting the scope of the invention. We therefore claimas our invention all that comes within the scope of these claims.

What is claimed is:
 1. A system, comprising: a host computer, comprisinga processor and a memory, wherein the memory stores computer-readableinstructions that, when executed by the processor, cause the hostcomputer to perform operations, the operations comprising: transmittingdata and an associated logical address to a storage device, monitoringan access rate for the data, and transmitting an attribute, associatedwith the data, to the storage device, wherein the attribute indicatesthat the access rate for the data is above a specified threshold; andthe storage device, comprising a storage medium and a storage devicecontroller, wherein the storage device controller is configured to:write the data to a first storage location of the storage medium,associate the logical address with the first storage location in amapping table, receive the attribute associated with the data from thehost computer, in response to receiving the attribute from the hostcomputer: determine that a second storage location can be accessed at afaster access rate than the first storage location; and write the datato the second storage location in the storage medium; and update themapping table to associate the logical address with the second storagelocation.
 2. The system of claim 1, wherein: the storage mediumcomprises a magnetic disk; and the writing the data to the secondstorage location comprises moving the data to a storage location that islocated closer to an outer diameter of the magnetic disk than the firststorage location.
 3. The system of claim 1, wherein: the writing thedata to the second storage location comprises copying the data to thesecond storage location; and the updating the mapping table comprisesindicating that the second storage location is a duplicate storagelocation for the data.
 4. The system of claim 1, wherein: the storagemedium is a zoned storage medium; and writing the data to the secondstorage location comprises moving the data from one zone of the storagemedium to another zone of the storage medium.
 5. A method, comprising:receiving a data write command at a storage device controller, whereinthe data write command comprises data to be written to a storage device;writing the data to a first storage location of the storage device;receiving an attribute associated with the data at the storage devicefrom a computing device connected to the storage device, wherein theattribute indicates that an access rate for the data is above aspecified threshold; responsive to receiving the attribute, determiningthat a second storage location can be accessed at a faster access ratethan the first storage location; and writing the data to the secondstorage location of the storage device based on the determining.
 6. Themethod of claim 5, wherein: the writing the data to the second storagelocation based on the attribute comprises moving the data to a storagelocation that is located closer to an outer diameter of a magnetic diskof the storage device than the first storage location.
 7. The method ofclaim 5, wherein: the attribute further indicates that the data shouldbe duplicated; and the writing the data to the second storage locationcomprises copying the data to the second storage location.
 8. The methodof claim 5, wherein: the writing the data to the second storage locationcomprises moving the data from one zone of the storage device to anotherzone of the storage device.
 9. The method of claim 5, wherein: the datawrite command comprises a logical address associated with the data; andthe method further comprises: updating a mapping table to associate thelogical address with the first storage location after receiving the datawrite command; and updating the mapping table to associate the logicaladdress with the second storage location after receiving the attribute.10. The method of claim 9, further comprising: receiving a data readrequest from the computing device, wherein the data read requestcomprises the logical address for the data; and using the logicaladdress and the mapping table to read the data from the second storagelocation.
 11. The method of claim 9, further comprising: receiving themapping table at the storage device from the computing device; andstoring the mapping table in a storage medium of the storage device. 12.The method of claim 5, wherein the writing the data to the secondstorage location comprises writing the data using a shingled magneticrecording format.
 13. The method of claim 5, wherein: the attributefurther indicates that a write access endurance for the first storagelocation is below a specified endurance threshold; and the methodfurther comprises determining that the second storage location has awrite access endurance above the specified endurance threshold.
 14. Astorage device comprising a storage medium and a storage devicecontroller, wherein the storage device controller is configured to:receive a data write command comprising data, a logical identifier forthe data, and an attribute associated with the data, wherein the datawrite command is received from a computing device connected to thestorage device; identify a storage location in the storage medium basedon the attribute associated with the data; write the data to the storagelocation; create a mapping record associating the storage location withthe logical identifier for the data; receive an updated attribute fromthe computing device, wherein the updated attribute indicates that anaccess rate for the data is above a specified threshold; responsive toreceiving the updated attribute, identify another storage location inthe storage medium that can be accessed at a faster access rate than thestorage location; and move the data to the another storage location. 15.The storage device of claim 14, wherein: the attribute indicates adesired access level for the data; and the identifying the storagelocation in the storage medium based on the attribute comprisesdetermining that a data access rate associated with the storage locationmeets or exceeds the desired access level.
 16. The storage device ofclaim 14, wherein the storage device controller is further configuredto: update the mapping record to associate the another storage locationwith the logical identifier for the data.
 17. The storage device ofclaim 14 wherein: the updated attribute further indicates that a writeaccess endurance for the storage location is below a specified endurancethreshold; and the identifying the another storage location in thestorage medium based on the updated attribute comprises determining thatthe another storage location has a write access endurance above thespecified endurance threshold.
 18. The storage device of claim 14,wherein the storage device controller is further configured to store themapping record in the storage medium of the storage device.